package com.company;
//这里举了四个类，他们的函数都不同，但都是 Object 类的子类
class AA
{
    void axx()
    {
        System.out.println("Good morning!");
        System.out.println("This is A");
    }
}

class BB
{
    void bxx()
    {
        System.out.println("Holle!");
        System.out.println("This is B");
    }
}

class CC
{
    void cxx()
    {
        System.out.println("Look!");
        System.out.println("This is C");
    }
}

class DD
{
    void dxx()
    {
        System.out.println("Oh!Bad!");
        System.out.println("This is D");
    }
}
public class Start {
    public static void main(String[] args)
    {
        AA a=new AA();
        BB b=new BB();
        CC c=new CC();
        DD d=new DD();
        speak(a);
        speak(b);
        speak(c);
        speak(d);
    }
    // instanceof 关键字是用于比较类与类是否相同，相同返回true，不同返回false
//当你不清楚你需要的参数是什么类型的，可以用Object来代替，Object可以代替任何类
    static void speak(Object obj)
    {
        if(obj instanceof AA)//意思是：如果参数是 A 类，那么就执行一下语句
        {
            AA aobj=(AA)obj;//这里是向下转换，需要强制转换
            aobj.axx();
        }
        else if(obj instanceof BB)
        {
            BB bobj=(BB)obj;
            bobj.bxx();
        }
        else if(obj instanceof CC)
        {
            CC cobj=(CC)obj;
            cobj.cxx();
        }
    }
}
